home *** CD-ROM | disk | FTP | other *** search
/ Sky at Night 2007 June / SAN CD 6-2007 CD-ROM 25.iso / pc / Software / AstroGrav_Win / Java / jre1.6.0 / lib / rt.jar / sun / io / Converters.class (.txt) < prev    next >
Encoding:
Java Class File  |  2006-11-29  |  4.1 KB  |  214 lines

  1. package sun.io;
  2.  
  3. import java.io.UnsupportedEncodingException;
  4. import java.lang.ref.SoftReference;
  5. import java.security.AccessController;
  6. import java.util.Properties;
  7. import sun.misc.VM;
  8. import sun.security.action.GetPropertyAction;
  9.  
  10. /** @deprecated */
  11. @Deprecated
  12. public class Converters {
  13.    private static Object lock = Converters.class;
  14.    private static String converterPackageName = null;
  15.    private static String defaultEncoding = null;
  16.    public static final int BYTE_TO_CHAR = 0;
  17.    public static final int CHAR_TO_BYTE = 1;
  18.    private static final String[] converterPrefix = new String[]{"ByteToChar", "CharToByte"};
  19.    private static final int CACHE_SIZE = 3;
  20.    private static final Object DEFAULT_NAME = new Object();
  21.    private static SoftReference[][] classCache = new SoftReference[][]{new SoftReference[3], new SoftReference[3]};
  22.  
  23.    private Converters() {
  24.    }
  25.  
  26.    private static void moveToFront(Object[] var0, int var1) {
  27.       Object var2 = var0[var1];
  28.  
  29.       for(int var3 = var1; var3 > 0; --var3) {
  30.          var0[var3] = var0[var3 - 1];
  31.       }
  32.  
  33.       var0[0] = var2;
  34.    }
  35.  
  36.    private static Class cache(int var0, Object var1) {
  37.       SoftReference[] var2 = classCache[var0];
  38.  
  39.       for(int var3 = 0; var3 < 3; ++var3) {
  40.          SoftReference var4 = var2[var3];
  41.          if (var4 != null) {
  42.             Object[] var5 = var4.get();
  43.             if (var5 == null) {
  44.                var2[var3] = null;
  45.             } else if (var5[1].equals(var1)) {
  46.                moveToFront(var2, var3);
  47.                return (Class)var5[0];
  48.             }
  49.          }
  50.       }
  51.  
  52.       return null;
  53.    }
  54.  
  55.    private static Class cache(int var0, Object var1, Class var2) {
  56.       SoftReference[] var3 = classCache[var0];
  57.       var3[2] = new SoftReference(new Object[]{var2, var1});
  58.       moveToFront(var3, 2);
  59.       return var2;
  60.    }
  61.  
  62.    public static boolean isCached(int var0, String var1) {
  63.       synchronized(lock) {
  64.          SoftReference[] var3 = classCache[var0];
  65.  
  66.          for(int var4 = 0; var4 < 3; ++var4) {
  67.             SoftReference var5 = var3[var4];
  68.             if (var5 != null) {
  69.                Object[] var6 = var5.get();
  70.                if (var6 == null) {
  71.                   var3[var4] = null;
  72.                } else if (var6[1].equals(var1)) {
  73.                   return true;
  74.                }
  75.             }
  76.          }
  77.  
  78.          return false;
  79.       }
  80.    }
  81.  
  82.    private static String getConverterPackageName() {
  83.       String var0 = converterPackageName;
  84.       if (var0 != null) {
  85.          return var0;
  86.       } else {
  87.          GetPropertyAction var1 = new GetPropertyAction("file.encoding.pkg");
  88.          var0 = (String)AccessController.doPrivileged(var1);
  89.          if (var0 != null) {
  90.             converterPackageName = var0;
  91.          } else {
  92.             var0 = "sun.io";
  93.          }
  94.  
  95.          return var0;
  96.       }
  97.    }
  98.  
  99.    public static String getDefaultEncodingName() {
  100.       synchronized(lock) {
  101.          if (defaultEncoding == null) {
  102.             GetPropertyAction var1 = new GetPropertyAction("file.encoding");
  103.             defaultEncoding = (String)AccessController.doPrivileged(var1);
  104.          }
  105.       }
  106.  
  107.       return defaultEncoding;
  108.    }
  109.  
  110.    public static void resetDefaultEncodingName() {
  111.       if (!VM.isBooted()) {
  112.          synchronized(lock) {
  113.             defaultEncoding = "ISO-8859-1";
  114.             Properties var1 = System.getProperties();
  115.             var1.setProperty("file.encoding", defaultEncoding);
  116.             System.setProperties(var1);
  117.          }
  118.       }
  119.    }
  120.  
  121.    private static Class getConverterClass(int var0, String var1) throws UnsupportedEncodingException {
  122.       String var2 = null;
  123.       if (!var1.equals("ISO8859_1")) {
  124.          if (var1.equals("8859_1")) {
  125.             var2 = "ISO8859_1";
  126.          } else if (var1.equals("ISO8859-1")) {
  127.             var2 = "ISO8859_1";
  128.          } else if (var1.equals("646")) {
  129.             var2 = "ASCII";
  130.          } else {
  131.             var2 = CharacterEncoding.aliasName(var1);
  132.          }
  133.       }
  134.  
  135.       if (var2 == null) {
  136.          var2 = var1;
  137.       }
  138.  
  139.       try {
  140.          return Class.forName(getConverterPackageName() + "." + converterPrefix[var0] + var2);
  141.       } catch (ClassNotFoundException var4) {
  142.          throw new UnsupportedEncodingException(var2);
  143.       }
  144.    }
  145.  
  146.    private static Object newConverter(String var0, Class var1) throws UnsupportedEncodingException {
  147.       try {
  148.          return var1.newInstance();
  149.       } catch (InstantiationException var3) {
  150.          throw new UnsupportedEncodingException(var0);
  151.       } catch (IllegalAccessException var4) {
  152.          throw new UnsupportedEncodingException(var0);
  153.       }
  154.    }
  155.  
  156.    static Object newConverter(int var0, String var1) throws UnsupportedEncodingException {
  157.       Class var2;
  158.       synchronized(lock) {
  159.          var2 = cache(var0, var1);
  160.          if (var2 == null) {
  161.             var2 = getConverterClass(var0, var1);
  162.             if (!var2.getName().equals("sun.io.CharToByteUTF8")) {
  163.                cache(var0, var1, var2);
  164.             }
  165.          }
  166.       }
  167.  
  168.       return newConverter(var1, var2);
  169.    }
  170.  
  171.    private static Class getDefaultConverterClass(int var0) {
  172.       boolean var1 = false;
  173.       Class var2 = cache(var0, DEFAULT_NAME);
  174.       if (var2 != null) {
  175.          return var2;
  176.       } else {
  177.          String var3 = getDefaultEncodingName();
  178.          if (var3 != null) {
  179.             var1 = true;
  180.          } else {
  181.             var3 = "ISO8859_1";
  182.          }
  183.  
  184.          try {
  185.             var2 = getConverterClass(var0, var3);
  186.             if (var1) {
  187.                cache(var0, DEFAULT_NAME, var2);
  188.             }
  189.          } catch (UnsupportedEncodingException var7) {
  190.             try {
  191.                var2 = getConverterClass(var0, "ISO8859_1");
  192.             } catch (UnsupportedEncodingException var6) {
  193.                throw new InternalError("Cannot find default " + converterPrefix[var0] + " converter class");
  194.             }
  195.          }
  196.  
  197.          return var2;
  198.       }
  199.    }
  200.  
  201.    static Object newDefaultConverter(int var0) {
  202.       Class var1;
  203.       synchronized(lock) {
  204.          var1 = getDefaultConverterClass(var0);
  205.       }
  206.  
  207.       try {
  208.          return newConverter("", var1);
  209.       } catch (UnsupportedEncodingException var4) {
  210.          throw new InternalError("Cannot instantiate default converter class " + var1.getName());
  211.       }
  212.    }
  213. }
  214.